xplentyとTableauでクラスメソッド公式YouTubeチャンネルのあれこれを可視化する
こんにちは、データアナリティクス事業本部ソリューション部プリセールススペシャリストの兼本です。
弊社の技術イベントDevelopers.IO 2020はすでにご覧いただいたでしょうか。今年はオンラインで開催しており、100本以上のさまざまなジャンルの動画をライブやVODで配信しています。
公式のYouTubeチャンネルも登録者数1,000名を超え、非常に盛況でありがたい限りです。
ここで気になるのは、公式チャンネルにアクセスしていただいているユーザがどんな属性を持っているのか、人気のある動画はどれなのか、といったあたりかと思います。
勿論、YouTubeにはアナリティクスツールが用意されており、これを使うことで、さまざまな分析を行うことができます。
また、これらの情報を他のデータと組み合わせたいときや、手元のツールで分析したい場合のために、Analytics and Reporting APIも用意されており、API経由でデータを抽出することも可能です。
しかしながら、APIの仕様を理解してほしいデータを取り出すのは、時には非常に困難を伴います。
そこで今回は、xplentyに用意されているYouTube Templateを使用して、できるだけ簡単にデータを取り出して可視化してみました。
可視化してみた
まずは結果からご紹介。今回は手元でサクッと可視化することを目的としていたので、Tableau Desktopでダッシュボードを作成しました。
以下、それぞれのViewをご紹介します。
サマリView
視聴者セグメント(%)
YouTube Report APIで取得した年齢グループ、性別ごとの視聴者割合データをヒートマップで表示しています。可視化することで、どのセグメントをメインターゲットにすればよいか、どこが弱いかが一目瞭然ですね。
エリア別View数
日本からの視聴が多いのは想定していましたが、韓国、ベトナム、ドイツからも視聴いただいているようです。弊社がそれぞれの国で支社を設立していることも関係しているかと推測します。
View数の推移
2020年6月のView数の推移を時系列で可視化しました。やはりDevelopers.IO 2020 Connect開催以降はView数が跳ね上がっています。一方で少しずつ下がっていることも否めないので、7月7日の最終日に向けて何か施策を打ちたいですね。
Top Videos
気になる人気動画です。View数、シェア数、視聴時間、チャンネル登録への貢献度という4つの指標でTopリストを出してみました。総合ランクの付け方に関しては議論の余地を残していますが、今回は本気でランキングするわけではないので、単純にすべての数値を足し算しているだけです。
残念ながら、今回使用した手法で取得できたのは動画のIDのみでしたので、上位の動画をいくつかかご紹介します。
第1位:ALL AWS Certifications EngineerによるAWS認定全制覇への道 #devio2020
当たり前といえばその通りですが、やはりAWS認定全制覇はエンジニアにとって憧れですね。View数、チャンネル登録への貢献度でトップでした。他の指標も総じて高く総合ランクトップとなりました。
第2位:ついに来た!Amazon Detectiveでセキュリティインシデントの調査がちょー捗るからまずやってみよう #devio2020
他の指標では1位にわずかに及びませんでしたが、セキュリティが気になる方にとっては非常に有益なコンテンツであるためか、再生時間でトップでした。
第3位:知らなくても困らないけど、知ると楽しいVPCの裏側の世界 #devio2020
こちらはタイトルが秀逸だなと思いますが、シェア数でトップでした。タイトルで興味を引いてから視聴を促す方式(?)で、他指標も全体的に良くバランスのよい結果になっています。
どうやったのか
残念ながら、TableauからYouTube APIのデータに直接アクセスはできないため、タイトルにもある通り、今回はxplentyを使用してYouTubeのデータを取得し、Redshiftに格納しました。
「xplenty」はクラウドベースのデータ統合プラットフォームで、特にコードフリーでデータパイプラインを素早く構築することを得意としています。弊社ブログでもすでにシリーズ化されていますので、併せてこちらもご覧ください。
Youtubeへの接続設定
- まずは「Conneciton」メニューを開き、新規にYouTube接続を作成します。
-
対応しているデータソースの一覧から、YouTubeを選択します。
-
Youtubeへのアクセスを行うため、Googleの認証プロセスを進めます。
-
Youtubeへのアクセスに使用するアカウントの選択
-
アクセスするブランド(チャンネルなど)の選択
-
問題なければ「許可」を押下します。
-
作成したYouTubeコネクションに名前を付けて保存します。
これで、YouTubeにアクセスする準備ができました。
テンプレートの利用
本来であれば、ここからYouTubeのAPI仕様とニラメッコしながらデータパイプラインを構築するのですが、xplentyにはビルトインのテンプレートが用意されていますので、今回は、YouTubeのデータをRedshiftに保存するテンプレートを使用します。
- 「Package」ページに移動して、新規にパッケージを作成します。
-
パッケージのタイプとして「DataFlow」を選択し、Templateの一覧から「YouTube to Redshift」を選択します。
-
パッケージに名前を付けて保存します。
テンプレートを利用したので、作成済みのフローが表示されます。もちろん、それぞれのフローで何をしているのかを理解しておく必要があるものの、API仕様をゼロから調べる必要がないのは非常にありがたいですね。
なお、フロー上にいくつかのメモが追加されている通り、いくつかの変数には値を設定する必要があります。
変数にアクセスするには、画面右上にあるツールバーから「・・・」ボタン(一部ではMeatball Menuと呼ばれているそうです)を押下します。
変数の一覧が表示されますので、以下のUser変数に値を設定します。
変数名 | 値 |
---|---|
Connection | (先ほど作成したYouTube接続の名称) |
ChannelID | (ターゲットとなるYouTubeのチャンネルID) |
StartDateByRange | '2020-06-01' |
EndDateByRange | '2020-07-31' |
TopVideomaxResults | '200' |
TopVideoSort | 'estimatedMinutesWatched' |
TopPlaylistmaxResults | '200' |
TopPlaylisSort | 'estimatedMinutesWatched' |
「TopVideomaxResults」「TopVideoSort」「TopPlaylistmaxResults」「TopPlaylisSort」の値については、以下の情報を参考にしています。
設定済みの変数ページは以下のようになります。
また、Redshiftへの接続定義は行われていないため、それぞれのフローに対してRedshiftの接続定義とテーブルを作成するターゲットとなるスキーマの指定を行う必要があります。
- フロー上の「RS_XXX」(例:RS_Channels_List)というアイコンをクリックして、設定を開きます。
-
「Choose target conection」でターゲットとなるRedshiftへのコネクションを選択します。(今回は事前に作成済みのコネクションを使用しています。)
-
「Define your destination properties」でターゲットとなるRedshiftに関する設定を行います。ここは「Target Schema」の設定をすれば、他の設定はデフォルトでOKです。
なお、Redshiftの設定に関しては、テンプレートで使用されているフローそれぞれに対して行う必要がありますので、注意してください。
設定が完了したら「Save & Run job」ボタンを押下してフローを実行します。ジョブの実行が成功すると実行履歴にCOMPLETEDと出力されます。
こちらは同じジョブを時間を空けて2回実行した結果ですが、初回に比べて2回目の実行時は差分データだけを送信していることも確認できます。 - 初回のジョブ実行結果
- 翌日に同じジョブを実行した結果
TableauからRedshiftにアクセス
TableauからRedshiftにアクセスし、ターゲットスキーマを確認すると、YouTube_xxxというテーブルが複数作成されていることがわかります。ここに様々な指標が格納されていますので、あとはこれらのデータを使用して上述のViewを作成することでデータの可視化が可能となります。
まとめ
いかがでしたか。
今回はxplentyとTableauを使用してYouTubeのアクセス情報を可視化する手法についてご紹介いたしました。
Developers.IO 2020 Connectも引き続き開催しておりますので、是非ともご視聴とチャンネル登録をお願いしますw
以上、最後までお読みいただきありがとうございました。